package com.example.costumview.activity;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;

import com.example.costumview.R;

public class GestureDetectorActivity extends AppCompatActivity {

    private static final String TAG = "GestureDetectorActivity";
    private GestureDetector mGestureDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gesture_detector);

        mGestureDetector = new GestureDetector(this, new GestureDetector.OnGestureListener() {
            //用户轻触触摸屏
            @Override
            public boolean onDown(@NonNull MotionEvent e) {
                Log.e(TAG, "onDown: " );
                return false;
            }

            //用户轻触触摸屏，尚未松开或拖动
            // 与onDown()的区别：无松开 / 拖动
            // 即：当用户点击的时，onDown（）就会执行，在按下的瞬间没有松开 / 拖动时onShowPress就会执行
            @Override
            public void onShowPress(@NonNull MotionEvent e) {
                Log.e(TAG, "onShowPress: " );
            }

            // 3. 用户长按触摸屏
            @Override
            public void onLongPress(@NonNull MotionEvent e) {
                Log.e(TAG, "onLongPress: ");
            }

            // 4. 用户轻击屏幕后抬起
            @Override
            public boolean onSingleTapUp(@NonNull MotionEvent e) {
                Log.e(TAG, "onSingleTapUp: ");
                return true;
            }

            // 5. 用户按下触摸屏 & 拖动
            @Override
            public boolean onScroll(@NonNull MotionEvent e1, @NonNull MotionEvent e2, float distanceX, float distanceY) {
                Log.e(TAG, "onScroll: ");
                return true;
            }

            // 6. 用户按下触摸屏、快速移动后松开
            // 参数：
            // e1：第1个ACTION_DOWN MotionEvent
            // e2：最后一个ACTION_MOVE MotionEvent
            // velocityX：X轴上的移动速度，像素/秒
            // velocityY：Y轴上的移动速度，像素/秒
            @Override
            public boolean onFling(@NonNull MotionEvent e1, @NonNull MotionEvent e2, float velocityX, float velocityY) {
                Log.e(TAG, "onFling: ");
                return true;
            }
        });

        TextView textView=findViewById(R.id.titletv);
        // 步骤2：让TextView检测手势：重写View的onTouch函数，将触屏事件交给GestureDetector处理，从而对用户手势作出响应
        textView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                mGestureDetector.onTouchEvent(event);
                return true;
            }
        });

    }
}